using System.Text;
using System.Windows.Controls;
using DeskRedis.Util;

namespace DeskRedis.MyControl.UserControls
{
    /// <summary>
    /// UCRedisValue4String.xaml 的交互逻辑。
    /// </summary>
    public partial class UCRedisValue4String : UserControl
    {
        #region 私有变量

        /// <summary>
        /// 当前值。
        /// </summary>
        private string currentValue;

        #endregion


        #region 构造方法

        /// <summary>
        /// 使用默认的参数创建 <see cref="UCRedisValue4String"/> 的实例。
        /// </summary>
        public UCRedisValue4String()
        {
            this.InitializeComponent();
        }

        #endregion


        #region 公共方法

        /// <summary>
        /// 清空文本。
        /// </summary>
        public void Clear()
        {
            this.currentValue = null;
            this.tbValue.Clear();
        }

        /// <summary>
        /// 设置Redis的值。
        /// </summary>
        /// <param name="value"></param>
        public void SetRedisValue(string value)
        {
            this.currentValue = value;

            this.CbbViewType_SelectionChanged(this.cbbViewType, null);
        }

        #endregion


        #region 本地事件

        /// <summary>
        /// 当值的视图类型变化时发生。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CbbViewType_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (this.currentValue == null)
            {
                return;
            }

            string viewType = ((ComboBoxItem)this.cbbViewType.SelectedItem).Content.ToString();
            this.tbValue.Text = this.currentValue.FormatRedisValue(viewType);
            this.tblockSize.Text = Encoding.Default.GetByteCount(this.currentValue).ToString();
        }

        #endregion
    }
}